package com.ruoyi.personnel.salary.payroll.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.sql.Timestamp;

/**
 * 工资表，数据传输对象，面向前端需求
 * @author lsy 2021.7.26
 * 修改：
 */
@Data
public class PayrollDto {
    /**
     * 工资表编号
     */
    @NotNull(message = "工资表编号不能为空")
    @ApiModelProperty(value = "工资表编号", required = true)
    private String payrollId;

    /**
     * 员工编号
     */
    @ApiModelProperty(value = "员工编号")
    private String staffId;

    /**
     * 员工名称
     */
    @ApiModelProperty("员工名称")
    private String staffName;

    /**
     * 部门编号
     */
    @ApiModelProperty("部门编号")
    private Long deptId;

    /**
     * 部门名称
     */
    @ApiModelProperty("部门名称")
    private String deptName;

    /**
     * 职位编号
     */
    @ApiModelProperty("职位编号")
    private Long postId;

    /**
     * 职位名称
     */
    @ApiModelProperty(value = "职位名称")
    private String postName;

    /**
     * 所属日期
     */
    @ApiModelProperty("所属日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp createTime;

    /**
     * 标准工资
     * 输入型
     */
    @ApiModelProperty("标准工资")
    private Double standardWage;

    /**
     * 津贴
     * 输入型
     */
    @ApiModelProperty("津贴")
    private Double allowance;

    /**
     * 月薪
     * 计算型
     */
    @ApiModelProperty("月薪")
    private Double monthlySalary;

    /**
     * 计时工资
     * 计算型
     */
    @ApiModelProperty("计时工资")
    private Double hourlyWage;

    /**
     * 计件工资
     * 计算型
     */
    @ApiModelProperty("计件工资")
    private Double pieceRate;

    /**
     * 请假扣除
     * 输入型
     */
    @ApiModelProperty("请假扣除")
    private Double leaveDeduction;

    /**
     * 工资总额
     * 计算型
     */
    @ApiModelProperty("工资总额")
    private Double totalSalary;

    /**
     * 扣住房基金
     * 输入型
     */
    @ApiModelProperty("扣住房基金")
    private Double housingFund;

    /**
     * 扣养老基金
     * 输入型
     */
    @ApiModelProperty("扣养老基金")
    private Double pensionFund;

    /**
     * 扣医疗基金
     * 输入型
     */
    @ApiModelProperty("扣医疗基金")
    private Double medicalFund;

    /**
     * 应发工资
     * 计算型
     */
    @ApiModelProperty("应发工资")
    private Double shouldSalary;

    /**
     * 扣税金
     * 计算型
     */
    @ApiModelProperty("扣税金")
    private Double incomeTax;

    /**
     * 实际工资
     * 计算型
     */
    @ApiModelProperty("实际工资")
    private Double actualSalary;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;
}
